using System.Collections.Generic;
using Gameplay.PVE.Data;
using UnityEngine;
namespace Gameplay.PVE.Config
{
    public class PveOutputFunction
    {
        public static float If(bool condition,float a,float b)
        {
            return condition ? a : b;
        }
        

        public static float GetOutput(int elementId,UnitData attacker,UnitData defender,int skillLevel)
        {
            switch (elementId)
            {
                case 100103: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 100102: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 100199: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 100111: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1.1f;

                case 100105: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2f;

                case 100106: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2f;

                case 100107: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.6f;

                case 100108: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.7f;

                case 100109: 
                    return 1f*If(defender.SpecialElementCount(14)>0,2,1)*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 300003: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.35f;

                case 300001: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.5f;

                case 300021: 
                    return 1f*0.15f;

                case 300022: 
                    return 1f*0.1f;

                case 300002: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2;

                case 130011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2;

                case 130012: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 130013: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 130014: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 180011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 110001: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.8f;

                case 110002: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.1f;

                case 110003: 
                    return 1f*attacker.TotalHp*0.05f;

                case 110004: 
                    return 1f*0.1f;

                case 110005: 
                    return 1f*0.1f;

                case 110006: 
                    return 1f*0.05f;

                case 200001: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 200002: 
                    return 1f*0.3f;

                case 200003: 
                    return 1f*0.2f;

                case 200004: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2;

                case 200005: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.3f;

                case 300005: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2;

                case 300006: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*2;

                case 300004: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 300007: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 300008: 
                    return 1f*0.5f;

                case 300009: 
                    return 1f*0.5f;

                case 300010: 
                    return 1f*100000000;

                case 300011: 
                    return 1f*0.3f;

                case 300012: 
                    return 1f*attacker.AttackValue*0.2f;

                case 300015: 
                    return 1f*0.3f;

                case 300016: 
                    return 1f*attacker.TotalHp*0.2f;

                case 300017: 
                    return 1f*attacker.TotalHp*0.2f;

                case 500005: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 500006: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 500009: 
                    return 1f*attacker.CurrentHp*0.3f;

                case 500010: 
                    return 1f*0.5f;

                case 500011: 
                    return 1f*attacker.TotalHp*0.2f;

                case 500012: 
                    return 1f*0.2f;

                case 600002: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 600003: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 600001: 
                    return 1f*1000;

                case 600006: 
                    return 1f*0.5f;

                case 600007: 
                    return 1f*0.5f;

                case 600008: 
                    return 1f*0.3f;

                case 600009: 
                    return 1f* -0.2f;

                case 600011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*0.1f;

                case 700001: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 700002: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 700003: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 700004: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 700005: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 700006: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                case 700007: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1f;

                case 800001: 
                    return 1f*(1+defender.HealBonus)*attacker.AttackValue/3*attacker.bulletDamageRatio;

                case 800002: 
                    return 1f*0.2f;

                case 800003: 
                    return 1f*0.2f;

                case 800004: 
                    return 1f*(1+defender.HealBonus)*attacker.AttackValue/3*attacker.bulletDamageRatio*0.5f;

                case 100100012: 
                    return 1f*3*1/2*0.6f*(1+4)*(50+skillLevel*5)/100*0.8f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 100100022: 
                    return 1f*3*1/30*0.6f*(1+4)*(50+skillLevel*5)/100*0.8f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 100200011: 
                    return 1f*2*0.3f*0.5f*(50+skillLevel*5)/100*0.8f*attacker.TotalHp;

                case 100300011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.8f;

                case 100300012: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.8f;

                case 100400011: 
                    return 1f*2*0.3f*2/3*(50+skillLevel*5)/100*0.8f;

                case 100900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 101100011: 
                    return 1f*3*0.6f*1/5*(1+4)*(50+skillLevel*5)/100*0.8f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+20;

                case 101100021: 
                    return 1f*3*0.6f*1/5*(1+4)*(50+skillLevel*5)/100*0.8f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+20;

                case 101200211: 
                    return 1f*2*0.3f*2*1/2*(50+skillLevel*5)/100*0.6f;

                case 101300011: 
                    return 1f*2*0.3f*2*1/2*(50+skillLevel*5)/100*0.6f;

                case 101300012: 
                    return 1f*2*0.3f*1/2*3*1/2*(50+skillLevel*5)/100*0.6f;

                case 101400011: 
                    return 1f*3*0.3f*((50+skillLevel*5)/100*0.6f+0.6f)*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio+10;

                case 101900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 102100011: 
                    return 1f*3*0.6f*1/6*(1+4)*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 102200011: 
                    return 1f*2*0.3f*1/2*1.6f*(50+skillLevel*5)/100;

                case 102200012: 
                    return 1f*2*0.3f*1/2*1.2f*(50+skillLevel*5)/100;

                case 102300011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 102300111: 
                    return 1f*2*0.3f*1/2*1.2f*(50+skillLevel*5)/100;

                case 102400011: 
                    return 1f*2*0.3f*1/3*2*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 102900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 603100011: 
                    return 1f*If(defender.SpecialElementCount(14)>0,2,1)*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio+3;

                case 103200111: 
                    return 1f*2*0.3f*2/3*(50+skillLevel*5)/100;

                case 103200211: 
                    return 1f*2*0.3f*1/3*(50+skillLevel*5)/100;

                case 103300111: 
                    return 1f*2*2*0.6f*(50+skillLevel*5)/100*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+3;

                case 603400011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio+3;

                case 103900011: 
                    return 1f*190;

                case 101900012: 
                    return 1f*390;

                case 101900013: 
                    return 1f*585;

                case 100900012: 
                    return 1f*103;

                case 9002000: 
                    return 1f*1140;

                case 9002002: 
                    return 1f*14;

                case 9003000: 
                    return 1f*129;

                case 9003002: 
                    return 1f*13;

                case 100900013: 
                    return 1f*59;

                case 9004000: 
                    return 1f*26;

                case 9005000: 
                    return 1f*3*0.3f*((50+skillLevel*5)/100*0.6f+0.6f)*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio+10;

                case 104100011: 
                    return 1f*3*0.6f*1/6*6/9*(1+4)*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 104200111: 
                    return 1f*(1+2*0.3f*0.5f*(50+skillLevel*5)/100)*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 104300111: 
                    return 1f*2*0.3f*2.4f/3*(50+skillLevel*5)/100;

                case 104300211: 
                    return 1f*2*0.3f*0.5f/3*2*3*(50+skillLevel*5)/100*(1+attacker.HealBonus)*attacker.AttackValue;

                case 104400011: 
                    return 1f*2*0.3f*2/5*2*(50+skillLevel*5)/100;

                case 104400012: 
                    return 1f*2*0.3f*2/5*2*(50+skillLevel*5)/100;

                case 104400013: 
                    return 1f*100000000;

                case 104900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 105100013: 
                    return 1f*3*0.6f*(50+skillLevel*5)/100*0.5f*0.8f;

                case 105100014: 
                    return 1f*3*1/2*0.6f*(1+4)*(50+skillLevel*5)/100*0.8f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 105200012: 
                    return 1f*2*0.6f*(1+4)*(50+skillLevel*5)/100*0.8f*0.5f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 105300011: 
                    return 1f*(2*0.3f+1)*0.5f*(50+skillLevel*5)/100*0.8f;

                case 105400011: 
                    return 1f*2*0.3f*(50+skillLevel*5)/100*0.8f;

                case 105900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 106100011: 
                    return 1f*3*0.5f*(50+skillLevel*5)/100*(1+4/6)*0.5f*0.8f*1;

                case 106100012: 
                    return 1f*3*0.5f*(50+skillLevel*5)/100*(1+4/6)*0.5f*0.8f*1;

                case 106200611: 
                    return 1f* -2*0.3f*1/2*(50+skillLevel*5)/100*2*0.5f;

                case 606200011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio+2;

                case 106300021: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 106300023: 
                    return 1f*defender.SpecialElementCount(2)*2*0.3f*0.6f*1/10*2*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 106400012: 
                    return 1f*defender.SpecialElementCount(2)*2*0.3f*0.6f*0.5f*1/10*2*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 106800011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 106900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 108200111: 
                    return 1f*2*0.3f*1/2*0.6f*1*(50+skillLevel*5)/100*0.8f*attacker.TotalHp;

                case 108300011: 
                    return 1f*2*0.3f*1/2*2*0.5f*(50+skillLevel*5)/100*0.8f;

                case 108300012: 
                    return 1f*2*0.3f*1/3*1.5f*(50+skillLevel*5)/100*0.8f;

                case 108400011: 
                    return 1f*0.3f*2*(50+skillLevel*5)/100*0.8f*(1+defender.HealBonus)*attacker.AttackValue/3*attacker.bulletDamageRatio*(1+attacker.HealBonus);

                case 108900011: 
                    return 1f*(1+defender.HealBonus)*attacker.AttackValue/3*attacker.bulletDamageRatio*(1+defender.HealBonus);

                case 112100011: 
                    return 1f*3*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+10;

                case 112200011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 112300011: 
                    return 1f*2*0.3f*1/2*3*(50+skillLevel*5)/100*0.4f;

                case 112400011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 112500011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 122100011: 
                    return 1f*3*0.8f*1/10*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+10;

                case 122200011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 122300011: 
                    return 1f*2*0.3f*1/2*3*(50+skillLevel*5)/100*0.4f;

                case 122400011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 122500011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 132100011: 
                    return 1f*3*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+10;

                case 132200011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 132300011: 
                    return 1f*2*0.3f*1/2*3*(50+skillLevel*5)/100*0.4f;

                case 132400011: 
                    return 1f*2*0.3f*1/2*2*(50+skillLevel*5)/100*0.4f;

                case 132500011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 141100011: 
                    return 1f*3*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+10;

                case 141200011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 141300011: 
                    return 1f*2*0.3f*1/2*3*(50+skillLevel*5)/100*0.4f;

                case 141400011: 
                    return 1f*0.6f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 141400021: 
                    return 1f*3*1/3*(50+skillLevel*5)/100*1/4*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 141500021: 
                    return 1f*0.6f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 200900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 200100011: 
                    return 1f*3*2/4*1.5f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 200100012: 
                    return 1f* -3*0.3f*2/4*(50+skillLevel*5)/100*0.4f;

                case 200200011: 
                    return 1f*2*3/4*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 200300011: 
                    return 1f*2*0.3f*1/4*2*(50+skillLevel*5)/100*0.4f;

                case 201900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 201200011: 
                    return 1f*2*(1+2)*(50+skillLevel*5)/100*0.8f*1/2*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 202100011: 
                    return 1f*3*2/4*1.5f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 202100012: 
                    return 1f* -3*0.3f*2/4*(50+skillLevel*5)/100*0.4f;

                case 202200011: 
                    return 1f*2*1/2*(1+3)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 203100011: 
                    return 1f*3*2/4*1.5f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 203100012: 
                    return 1f*0.5f;

                case 203200011: 
                    return 1f*2*(1+2)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 203300011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 206900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 204900011: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 204100011: 
                    return 1f*3*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+10;

                case 204200011: 
                    return 1f*2*(1+2)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 204300011: 
                    return 1f*2*0.3f*1/2*3*(50+skillLevel*5)/100*0.4f;

                case 205900011: 
                    return 1f*0.6f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 205100011: 
                    return 1f*3*0.6f*1/3*1/3*(1+4)*(50+skillLevel*5)/100*0.7f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3+10;

                case 205200012: 
                    return 1f*3*1/2*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 205200022: 
                    return 1f*3*2/18*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 205200031: 
                    return 1f*-0.5f;

                case 205300011: 
                    return 1f*(50+skillLevel*5);

                case 300100002: 
                    return 1f*3*1/2*1.5f*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 300200011: 
                    return 1f*2*1/2*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio;

                case 300300011: 
                    return 1f*2*0.3f*1/3*2*(50+skillLevel*5)/100*0.4f;

                case 301200011: 
                    return 1f*2*0.3f*1/2*1*(50+skillLevel*5)/100*0.4f*attacker.TotalHp;

                case 301100111: 
                    return 1f*2*0.3f*1/2*3*1/2*(50+skillLevel*5)/100*0.4f;

                case 301300011: 
                    return 1f*2*0.3f*1/3*2*(50+skillLevel*5)/100*0.4f;

                case 302100011: 
                    return 1f*3*1/12*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 302200011: 
                    return 1f*2*0.6f*(1+2)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 302300011: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 302300012: 
                    return 1f*2*0.3f*1/2*(50+skillLevel*5)/100*0.4f;

                case 303100011: 
                    return 1f*3*0.6f*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 303100012: 
                    return 1f*1;

                case 303100013: 
                    return 1f*1;

                case 303300011: 
                    return 1f*2*0.3f*1/2*1.2f*(50+skillLevel*5)/100;

                case 304100011: 
                    return 1f*3*0.3f*1/2*(1+4)*(50+skillLevel*5)/100*0.4f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 161500023: 
                    return 1f*defender.SpecialElementCount(4)*2*0.3f*0.6f*1/10*2*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3;

                case 261100111: 
                    return 1f*3*0.6f*1/6*(1+4)*(50+skillLevel*5)/100*1*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*3*0.6f;

                case 1: 
                    return 1f*1;

                case 4: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*1;

                case 5: 
                    return 1f*attacker.AttackValue*attacker.AttackValue/(attacker.AttackValue+defender.DefenceValue)*attacker.bulletDamageRatio*attacker.Level*1;

                default:
                    return 0;
            }
        }
    
    
    }
}   
    